/* include/kernel/tty.h 
 * 
 * Copyright (C) 2021, 2022 intirain. 
 *
 * This file is part of evx. 
 * 
 * evx is free software: you can redistribute it and/or modify 
 * it under the terms of the GNU General Public License as published by 
 * the Free Software Foundation, either version 3 of the License, or 
 * (at your option) any later version. 
 * 
 * evx is distributed in the hope that it will be useful, 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
 * GNU General Public License for more details. 
 * 
 * You should have received a copy of the GNU General Public License 
 * along with evx. If not, see <https://www.gnu.org/licenses/>
 */ 




#ifndef __TTY_H
#define __TTY_H


#ifndef __ASSEMBLER__

#include <sys/types.h>

struct tty {
	char 		*dev_name;
	int 		priv_data;

#define FLAGS_READABLE 	1
#define FLAGS_COLORS 	2

	int 		flags;
	
	int 		(* putc) (char);
	struct tty 	*next;

	/* optional */
	char 		(* getc) (void);
};

int tty_register(struct tty *);
int tty_write(struct tty *, char *);
int tty_write_all(char *);

extern struct klist_node ttys;


#endif
#endif

